package optiondialoges;

import javax.swing.JPanel;
import java.awt.Frame;
import java.awt.BorderLayout;
import javax.swing.JDialog;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JLabel;
import javax.swing.JTextField;

import panel.GlyphPanel;


import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.Serializable;

public class InsetOptionPanel extends JDialog implements ActionListener, WindowListener, Serializable {

    private static final long serialVersionUID = 1L;

    private JPanel jContentPane = null;

    private JPanel buttonPanel = null;

    private JButton okButton = null;

    private JButton cancelButton = null;

    private JPanel optionPanel = null;

    private JLabel jLabel = null;

    private JTextField xTextField = null;

    private JLabel jLabel1 = null;

    private JTextField yTextField = null;

    private GlyphPanel panel;

    private String x;

    private String y;

    /**
     * @param owner
     */
    public InsetOptionPanel(Frame owner, GlyphPanel panel) {
        super(owner);
        this.panel=panel;
        this.addWindowListener(this);
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        this.setSize(236, 166);
        this.setContentPane(getJContentPane());
    }

    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getButtonPanel(), BorderLayout.SOUTH);
            jContentPane.add(getOptionPanel(), BorderLayout.CENTER);
        }
        return jContentPane;
    }

    /**
     * This method initializes buttonPanel	
     * 	
     * @return javax.swing.JPanel	
     */
    private JPanel getButtonPanel() {
        if (buttonPanel == null) {
            GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
            gridBagConstraints1.gridx = 1;
            gridBagConstraints1.insets = new Insets(10, 10, 10, 10);
            gridBagConstraints1.gridy = 0;
            GridBagConstraints gridBagConstraints = new GridBagConstraints();
            gridBagConstraints.insets = new Insets(10, 10, 10, 10);
            buttonPanel = new JPanel();
            buttonPanel.setLayout(new GridBagLayout());
            buttonPanel.add(getOkButton(), gridBagConstraints);
            buttonPanel.add(getCancelButton(), gridBagConstraints1);
        }
        return buttonPanel;
    }

    /**
     * This method initializes okButton	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getOkButton() {
        if (okButton == null) {
            okButton = new JButton();
            okButton.setText("Ok");
            okButton.addActionListener(this);
        }
        return okButton;
    }

    /**
     * This method initializes cancelButton	
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getCancelButton() {
        if (cancelButton == null) {
            cancelButton = new JButton();
            cancelButton.setText("Cancel");
            cancelButton.addActionListener(this);
        }
        return cancelButton;
    }

    /**
     * This method initializes optionPanel	
     * 	
     * @return javax.swing.JPanel	
     */
    private JPanel getOptionPanel() {
        if (optionPanel == null) {
            GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
            gridBagConstraints5.fill = GridBagConstraints.VERTICAL;
            gridBagConstraints5.gridy = 1;
            gridBagConstraints5.weightx = 1.0;
            gridBagConstraints5.anchor = GridBagConstraints.WEST;
            gridBagConstraints5.insets = new Insets(10, 0, 0, 0);
            gridBagConstraints5.gridx = 1;
            GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
            gridBagConstraints4.gridx = 0;
            gridBagConstraints4.anchor = GridBagConstraints.EAST;
            gridBagConstraints4.insets = new Insets(10, 40, 0, 10);
            gridBagConstraints4.gridy = 1;
            jLabel1 = new JLabel();
            jLabel1.setText("y:");
            GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
            gridBagConstraints3.fill = GridBagConstraints.VERTICAL;
            gridBagConstraints3.gridy = 0;
            gridBagConstraints3.weightx = 1.0;
            gridBagConstraints3.anchor = GridBagConstraints.WEST;
            gridBagConstraints3.insets = new Insets(10, 0, 0, 0);
            gridBagConstraints3.gridx = 1;
            GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
            gridBagConstraints2.gridx = 0;
            gridBagConstraints2.anchor = GridBagConstraints.EAST;
            gridBagConstraints2.insets = new Insets(10, 40, 0, 10);
            gridBagConstraints2.gridy = 0;
            jLabel = new JLabel();
            jLabel.setText("x:");
            optionPanel = new JPanel();
            optionPanel.setLayout(new GridBagLayout());
            optionPanel.add(jLabel, gridBagConstraints2);
            optionPanel.add(getXTextField(), gridBagConstraints3);
            optionPanel.add(jLabel1, gridBagConstraints4);
            optionPanel.add(getYTextField(), gridBagConstraints5);
        }
        return optionPanel;
    }

    /**
     * This method initializes xTextField	
     * 	
     * @return javax.swing.JTextField	
     */
    private JTextField getXTextField() {
        if (xTextField == null) {
            xTextField = new JTextField();
            xTextField.setPreferredSize(new Dimension(120, 21));
        }
        return xTextField;
    }

    /**
     * This method initializes yTextField	
     * 	
     * @return javax.swing.JTextField	
     */
    private JTextField getYTextField() {
        if (yTextField == null) {
            yTextField = new JTextField();
            yTextField.setPreferredSize(new Dimension(120, 21));
        }
        return yTextField;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton button=(JButton)e.getSource();
        if(button.getText().contentEquals("Ok")) {
            x=xTextField.getText();
            y=yTextField.getText();
            panel.setOptionsSet(true);
            panel.setDialog(this);
            String command=String.format("insertAtX=%s;%ninsertAtY=%s", x,y);
            panel.setCommand(command);
        }else if (button.getText().contentEquals("Cancel")) {
            xTextField.setText(x);
            yTextField.setText(y);
        }
        this.setVisible(false);
        
    }

    @Override
    public void windowActivated(WindowEvent e) {
        // ignore
        
    }

    @Override
    public void windowClosed(WindowEvent e) {
     // ignore
        
    }

    @Override
    public void windowClosing(WindowEvent e) {
     // ignore
        
    }

    @Override
    public void windowDeactivated(WindowEvent e) {
        xTextField.setText(x);
        yTextField.setText(y);
        
    }

    @Override
    public void windowDeiconified(WindowEvent e) {
     // ignore
        
    }

    @Override
    public void windowIconified(WindowEvent e) {
     // ignore
        
    }

    @Override
    public void windowOpened(WindowEvent e) {
        x=xTextField.getText();
        y=yTextField.getText();
        
    }

}  //  @jve:decl-index=0:visual-constraint="10,44"
